//4042:Rabin-Karp字符串匹配
/*
描述
现在有一个仅由小写字母组成的字符串S，假定将字母a,b,c...z依次编号为1,2,3...26，现在要在S中找到所有长度为m的且字母编号和为q的子串。

输入
第一行输入N，表示测试数据的个数，以下N行每行包含一个测试数据
一行测试数据由三部分组成：字符串S(长度不超过100)、m（m小于S的长度）、q。
输出
输出符合条件的子串个数
后面每行输出一个相应的子串

*/

#include <iostream>
#include<stdio.h>
#include"string.h"
#define N 100

int main()
{
    int count,m,q,len;
    int i,j,k,sum;
    char str[N];
    int flag[N];
    scanf("%d",&count);
    while(count >0)
    {
        scanf("%s",str);
        scanf("%d",&m);
        scanf("%d",&q);
        len=strlen(str);
        sum=0;
        k=0;
        for(i=0;i<len;i++)
        {
            for(j=i;j<i+m;j++)
            {
                sum = sum + (int)str[j] - 96;
            }
            if(sum==q)
            {
                flag[k]=i;
                k++;
            }
            sum=0;
        }
        printf("%d\n",k);
        for(i=0;i<k;i++)
        {
            for(j=flag[i]; j<flag[i]+m; j++)
            printf("%c",str[j]);
            printf("\n");
        }
        count--;
    }
return 0;
}

//Accepted
